I made another Temporal polyfill from scratch
特に DST や era 定義などで仕様と異なる挙動があり、実運用で困るケースが多い。
著者は既存実装の構造上、修正が難しく、自作が最も現実的と判断
最終仕様(Stage 4)準拠
最小クラスのバンドルサイズ(52 kb min)
内部整数表現を BigInt ではなく 2 要素配列で実装し、古い環境でも動作可能 仕様の擬似コードをほぼ逐語的に実装 → バグが減り、デバッグ容易
内部プロパティを $ / _ で始める命名規則にして安全にプロパティ圧縮
非 ISO カレンダーは条件付き import/export で追加可能(calendars-full) 実装上の工夫
Intl.DateTimeFormat の formatToParts を解析して UTC offset を算出
既存ライブラリと同様の手法
LRU キャッシュで offset 計算を高速化(改善中)
throw を関数化し minify 効率を上げるなど、徹底したサイズ削減
バンドルサイズ比較(2026年4月時点)
native: 0 kB
temporal-polyfill-lite: 52.1 kB
temporal-polyfill-lite/calendars-full: 63.6 kB
temporal-polyfill: 57.0 kB
@js-temporal/polyfill: 159.7 kB
どの polyfill を使うべきか
現状は temporal-polyfill-lite が最良
Node.js v26 が LTS になる 2026年10月以降は polyfill 不要に
temporal-polyfill-lite が最も軽量で実用的